@信仰
3年前 提问
1个回答
java中&和&&有什么区别
房乐
3年前
java中&&和&都是表示与的逻辑运算符,都表示逻辑运输符and,当两边的表达式都为true的时候,整个运算结果才为true,否则为false。
java中&和&&主要区别如下:
&叫做按位与,&直接操作整数基本类型,而&&不行。按位与运算符“&”是双目运算符。其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位都为1时,结果位才为1。参与运算的两个数均以补码出现。
例如, 0x31 & 0x0f 的结果为 0x01
&&叫做短路与,&&有短路效应,即:当第一个布尔运算为false,第二个布尔运算不执行。而&运算符没有。
例如,对于 if(str != null && !str.equals(“”))表达式,当 str 为 null 时,后面的表达式不会执行,所以不会出现 NullPointerException
如果将&&改为&,则会抛出 NullPointerException 异常。 If(x==33 & ++y>0) y 会增长, If(x==33 && ++y>0)不会增长